/*
Package hash
@Author   : Uyynot
@Email    : uyynot@qq.com
@Time     : 2024/3/1 17:05
@File     : hash.go
@Project  : gohub
@Desc     : 哈希操作类
*/
package hash

import (
	"gohub/pkg/logger"
	"golang.org/x/crypto/bcrypt"
)

// BcryptHash 使用bcrypt加密
func BcryptHash(password string) string {
	//GenerateFromPassword第二个参数建议大于12， 数值越大耗费时间越长
	bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
	logger.LogIf(err)
	return string(bytes)
}

// BcryptCheck 对比明文和哈希值
func BcryptCheck(password, hash string) bool {
	//密码加密对比
	err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
	return err == nil
}

// BcryptIsHashed 判断字符串是否已哈希
func BcryptIsHashed(str string) bool {
	//bcrypt加密后长度等于60
	return len(str) == 60
}
